﻿using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
    private string uploadDir; //uploadDir变量存放文件保存路径

    //页面加载时获取用户的基本信息并显示
    protected void Page_Load(object sender, EventArgs e)
    {
        //默认将文件保存到网站根文件夹下的image子文件夹中
        uploadDir = Path.Combine(Request.PhysicalApplicationPath, "image");

        if (Session["UserId"] == null)//用户未登录，返回登录界面
        {
            Response.Redirect("Login.aspx");
        }
        else
        {
            if (!IsPostBack)//页面首次加载
            {
                MyDataDataContext db = new MyDataDataContext();
                //获取要显示的记录对象
                User user = (from r in db.User
                             where r.UserID == Session["UserId"].ToString()
                             select r).FirstOrDefault();

                //头像图片路径不为空，显示头像
                if (user.UserPicture != null) 
                {
                    Image1.ImageUrl = user.UserPicture;
                }

                //给对应的TextBox控件赋初值，显示用户信息
                //星级评价分数
                Start.Text = Convert.ToString(user.Start) + "分";
                //用户名
                UserName.Text = user.UserNickname;
                //电话号码
                PhoneNumber.Text = user.UserPhone;
                //QQ号码
                QQNumber.Text = user.QQ;
                //性别
                Sex.SelectedValue = user.UserSex;
                //地址
                Address.Text = user.UserAddress;
            }
        }
    }

    //更换头像
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (fupImage.PostedFile.FileName == "")//无文件上传
        {
            lblMsg.Text = "无文件上传！";
        }
        else //有文件上传
        {
            if (fupImage.PostedFile.ContentLength > 204800)//文件大小超过200KB
            {
                lblMsg.Text = "文件大小不能超过200KB！";
            }
            else //文件大小未超过200KB
            {
                string extension = Path.GetExtension(fupImage.PostedFile.FileName);
                switch (extension.ToLower()) //判断文件类型
                {
                    case ".png":
                    case ".bmp":
                    case ".jpeg":
                    case ".jpg":
                        break;
                    default:         //文件扩展名不是png、bmp、jpg、jpeg
                        lblMsg.Text = "文件扩展名必须是png、bmp、jpg或jpeg！";
                        return;
                }

                //获取上传文件的文件名
                string fileName = Path.GetFileName(fupImage.PostedFile.FileName);
                //上传的文件将以原文件名保存到网站根目录文件夹下的image子文件夹中
                string fullPath = Path.Combine(uploadDir, fileName);

                try
                {
                    fupImage.PostedFile.SaveAs(fullPath); //上传文件    
                    Image1.ImageUrl = "image/" + fileName;//显示新头像

                    //将新头像信息更新到数据库
                    MyDataDataContext db = new MyDataDataContext();
                    //获取要修改的记录对象
                    User user = (from r in db.User
                                 where r.UserID == Session["UserId"].ToString()
                                 select r).FirstOrDefault();

                    //图片路径保存至数据库
                    user.UserPicture = "image/" + fileName;
                    //提交
                    db.SubmitChanges();
                    lblMsg.Text = "头像更换成功！";
                }
                catch (Exception ee)
                {
                    lblMsg.Text = ee.Message; //上传文件失败，显示出错信息
                }
            }
        }
    }

    //更新用户修改的基本信息
    protected void SaveButton_Click(object sender, EventArgs e)
    {
        //控件全部通过验证
        if (Page.IsValid)
        {
            MyDataDataContext db = new MyDataDataContext();
            //获取要修改的对象记录
            User user = (from r in db.User
                         where r.UserID == Session["UserId"].ToString()
                         select r).FirstOrDefault();

            //输入的用户名与原用户名不一致，需进一步检查新用户名是否已经存在
            if (UserName.Text != user.UserNickname)
            {
                //新用户名已经存在
                if (Name(UserName.Text))
                {
                    lblMsg.Text = "用户名已经被使用！";
                }
                //新用户名未被使用
                else
                {
                    //获取用户修改的内容并提交到数据库
                    //星级评价分数用户不可修改
                    //用户名
                    user.UserNickname = UserName.Text.Trim();
                    //电话号码
                    user.UserPhone = PhoneNumber.Text.Trim();
                    //QQ号码
                    user.QQ = QQNumber.Text.Trim();
                    //性别
                    user.UserSex = Sex.SelectedValue;
                    //地址
                    user.UserAddress = Address.Text.Trim();

                    //提交
                    db.SubmitChanges();
                    lblMsg.Text = "修改成功！";
                }
            }
            //用户名没有变化，不需要检查
            else
            {
                //获取用户修改的内容并提交到数据库
                //星级评价分数用户不可修改
                //用户名
                user.UserNickname = UserName.Text.Trim();
                //电话号码
                user.UserPhone = PhoneNumber.Text.Trim();
                //QQ号码
                user.QQ = QQNumber.Text.Trim();
                //性别
                user.UserSex = Sex.SelectedValue;
                //地址
                user.UserAddress = Address.Text.Trim();

                //提交
                db.SubmitChanges();
                lblMsg.Text = "修改成功！";
            }

            
        }
      
    }

    //检查用户名是否已经存在
    public bool Name(string name)
    {
        MyDataDataContext db = new MyDataDataContext();
        //检查用户名是否已经被使用
        User user1 = (from r in db.User
                     where r.UserNickname == name
                     select r).FirstOrDefault();

        //用户名已经被使用
        if (user1 != null)
        {
            return true;
        }
        //用户名未被使用
        else
        {
            return false;
        }
    }
}